package com.edu.jvm.unit01.heap;

/**
 * -Xms 用来设置堆空间(年轻代+老年代)的初始化内存大小(电脑内存/64)
 *      -X 是jvm的运行参数
 *      ms 是memory start
 * -Xms 用来设置堆空间(年轻代+老年代)的最大内存大小(电脑内存/4)
 *
 * 手动设置：-Xms600m -Xmx600m:开发中建议将初始堆内存和最大堆内存设置成相同的值
 *
 * 查看设置的参数：方式一：jps / jstat -gc 进程id
 *              方式二：-XX:+PrintGCDetails
 * @author five-five
 * @date 2021/9/12
 */
public class HeapSpaceInitial {
    public static void main(String[] args) {
        Runtime runtime = Runtime.getRuntime();
        //有一块幸存区无法使用(使用复制算法)
        //返回Java虚拟机的堆内存总量
        long initialMemory = runtime.totalMemory() / 1024 / 1024;

        //返回Java虚拟机试图使用的最大堆内存总量
        long maxMemory = runtime.maxMemory() / 1024 / 1024;

        System.out.println("-Xms : " + initialMemory + "MB");
        System.out.println("-Xmx : " + maxMemory + "MB");

        System.out.println("系统内存大小为 : " + initialMemory * 64.0 / 1024 + "GB");
        System.out.println("-Xmx : " + maxMemory * 4.0 / 1024 + "GB");

        //睡眠
        try {
            Thread.sleep(Integer.MAX_VALUE);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }

}
